package pfc;

import edu.stanford.smi.protege.model.Instance;
import edu.stanford.smi.protege.model.Project;
import edu.stanford.smi.protegex.owl.jena.JenaOWLModel;
import edu.stanford.smi.protegex.owl.model.OWLDatatypeProperty;
import edu.stanford.smi.protegex.owl.model.OWLIndividual;
import java.util.AbstractCollection;
import java.util.Date;
import javax.swing.JComponent;

/**
 *
 * @author <Mejico, Rocío; Mignola, Natalia; Ordoñez, Agustina>
 */
public class GestorInformacion {

    private Project prj;
    private JenaOWLModel owlModel;
    private Date fecha;

    public GestorInformacion(Project archivo) {
        prj = archivo;
        owlModel = (JenaOWLModel) prj.getKnowledgeBase();
        fecha = new Date();
    }

    /*carga las secciones del formulario de protege*/
    public JComponent panelInfo() {
        Instance iObj = prj.getKnowledgeBase().getInstance("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        JComponent insPanel = (JComponent) prj.createRuntimeClsWidget(iObj);
        return insPanel;
    }

    public boolean idCompleto() {
        OWLIndividual x = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty p = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#id");
        if (!x.hasPropertyValue(p)) {
            return false;
        } else {
            return true;
        }
    }

    public boolean liderCompleto() {
        if (getID().equals("")) {
            return false;
        } else {
            return true;
        }
    }

    public String getID() {
        OWLIndividual x = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty p = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#id");
        if (!x.hasPropertyValue(p)) {
            return new String();
        } else {
            return (String) x.getPropertyValue(p);
        }
    }

    public String getLider() {
        OWLIndividual x = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty p = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#Lider");
        if (!x.hasPropertyValue(p)) {
            return new String();
        } else {
            return (String) x.getPropertyValue(p);
        }
    }

    public void setNombreProyecto(String nombre) {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadNombre = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#Nombre");
        individuo.setPropertyValue(propiedadNombre, nombre);
    }

    public void setFechaCreacion() {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadFechaCreacion = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#fechaCreacion");
        java.util.Date utilDate = new java.util.Date(); //fecha actual
        long lnMilisegundos = utilDate.getTime();
        java.sql.Date fechaC = new java.sql.Date(lnMilisegundos);
        individuo.setPropertyValue(propiedadFechaCreacion, fechaC.toString());
    }

    public void setFechaUltimaActualizacion() {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadFechaActualizacion = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#fechaUltimaActualizacion");
        java.util.Date utilDate = new java.util.Date(); //fecha actual
        long lnMilisegundos = utilDate.getTime();
        java.sql.Date fechaU = new java.sql.Date(lnMilisegundos);
        individuo.setPropertyValue(propiedadFechaActualizacion, fechaU.toString());
    }

    public String getNombreProyecto() {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadNombre = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#Nombre");
        return (String) individuo.getPropertyValue(propiedadNombre);
    }

    public String getFechaCreacion() {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadFechaCreacion = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#fechaCreacion");
        return (String) individuo.getPropertyValue(propiedadFechaCreacion);
    }

    public String getFechaUltimaActualizacion() {
        OWLIndividual individuo = owlModel.getOWLIndividual("http://www.owl-ontologies.com/Ontology1324585894.owl#infoProyecto_1");
        OWLDatatypeProperty propiedadFechaActualizacion = owlModel.getOWLDatatypeProperty("http://www.owl-ontologies.com/Ontology1324585894.owl#fechaUltimaActualizacion");
        return (String) individuo.getPropertyValue(propiedadFechaActualizacion);
    }
}
